﻿Imports lbGlobalcom
Public Class fRemisiones
    Dim daMovimi As lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTOTableAdapter
    Dim daMovimiDetalle As lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTODETALLETableAdapter
    Dim daMovimiDetDescri As lbGlobalcom.dsMovimientoTableAdapters.MOV_DESCRIPCIONDETTableAdapter
    Dim daTipoDoc As lbGlobalcom.dsGlobalTableAdapters.GLO_TIPODOCUMENTOTableAdapter
    Dim daTerce As lbGlobalcom.dsTerceroTableAdapters.TER_TERCEROTableAdapter
    Dim daProv As lbGlobalcom.dsTerceroTableAdapters.TER_PROVEEDORESTableAdapter
    Dim daCli As lbGlobalcom.dsTerceroTableAdapters.TER_CLIENTESTableAdapter
    Dim daVen As lbGlobalcom.dsTerceroTableAdapters.TER_VENDEDORTableAdapter
    Dim daTipoSubProd As lbGlobalcom.dsGlobalTableAdapters.GLO_DATOSTABLASTableAdapter
    Dim daInv As lbGlobalcom.dsInventariosTableAdapters.INV_DETALLETableAdapter
    Dim drProv As lbGlobalcom.dsTercero.TER_PROVEEDORESRow
    Dim drCli As lbGlobalcom.dsTercero.TER_CLIENTESRow
    Dim drVen As lbGlobalcom.dsTercero.TER_VENDEDORRow
    Dim cListaP As lbGlobalcom.cEncaListaPrecios
    Dim cDetLis As lbGlobalcom.cDetalleListaPrecios
    Dim CantOld As Integer = 0
    'Dim cMov As New lbGlobalcom.cMovimiento
    Dim cCom As lbGlobalcom.cCompra
    Dim iTipoDoc As cTipoDocumento
    Dim iBodOri As cBodegas
    Dim iBodDes As cBodegas
    Dim iFP As cFormasPago
    Dim iTerce As cTercero
    Dim iCliente As cClientes
    Private lEliminaDoc As Boolean = False
    Private mensajeValidacion As String = ""
    Private lIdPrepackSel As Int16 = 0

    Private Sub fRemisiones_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Try
            If DsMovimiento.MOV_DESCRIPCIONDET.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTO.GetChanges IsNot Nothing Then
                If MessageBox.Show("Hay cambios pendientes por salvar, desea salvarlos", "Cambios Pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    SalvaCambios(False)
                End If
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Private Sub fMovimiento_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            daMovimi = New lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTOTableAdapter
            daMovimiDetalle = New lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTODETALLETableAdapter
            daMovimiDetDescri = New lbGlobalcom.dsMovimientoTableAdapters.MOV_DESCRIPCIONDETTableAdapter
            daTipoDoc = New lbGlobalcom.dsGlobalTableAdapters.GLO_TIPODOCUMENTOTableAdapter
            daTerce = New lbGlobalcom.dsTerceroTableAdapters.TER_TERCEROTableAdapter
            daTipoSubProd = New lbGlobalcom.dsGlobalTableAdapters.GLO_DATOSTABLASTableAdapter
            daInv = New lbGlobalcom.dsInventariosTableAdapters.INV_DETALLETableAdapter
            lbGlobalcom.cGeneral.ActivaControles(Me.Controls, False)
            DsInventarios.INV_TIPOSPREPACKS.Merge(cGeneral.GetTiposPrepacks())
            FECHADOCUMENTODateTimePicker.MaxDate = CustomPrincipal.Periodo.HASTAF
            FECHADOCUMENTODateTimePicker.MinDate = CustomPrincipal.Periodo.DESDEF
            If CustomPrincipal.Periodo.DESDEF <= Date.Today And CustomPrincipal.Periodo.HASTAF >= Date.Today Then
                DsMovimiento.MOV_MOVIMIENTO.Columns("FECHADOCUMENTO").DefaultValue = Date.Today
            Else
                DsMovimiento.MOV_MOVIMIENTO.Columns("FECHADOCUMENTO").DefaultValue = CustomPrincipal.Periodo.HASTAF
            End If
            DsMovimiento.MOV_MOVIMIENTO.Columns("FECHAVENCIMIENTO").DefaultValue = Date.Today
            daTipoSubProd.FillByIdGrupo(DsGlobal.GLO_DATOSTABLAS, "sp")
            DsMovimiento.MOV_MOVIMIENTODETALLE.Columns("IDPREPACK").DefaultValue = 0
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try


    End Sub

    Private Sub btnBuscaBodOri_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaBodOri.Click
        Try
            Dim fBusBod As New fListaBodegas
            fBusBod.idSede = IDSEDETextBox.Text
            If fBusBod.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDBODEGAORIGENTextBox.Text = fBusBod.Bodega
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaCanal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaCanal.Click
        Try
            Dim fLC As New fListaCanales
            If fLC.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDCANALTextBox.Text = fLC.Canal
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaCCosto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaCCosto.Click
        Try
            Dim fCC As New fListaCCostos
            If fCC.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDCCOSTOTextBox.Text = fCC.CCosto
            End If

        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaLista_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaLista.Click
        Try
            Dim fLP As New fListaPrecios
            If fLP.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDLISTATextBox.Text = fLP.Lista
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub CargaTipoDoc(ByVal TipoDoc As String)
        Try
            iTipoDoc = New cTipoDocumento(TipoDoc)
            If iTipoDoc Is Nothing Then
                MessageBox.Show("El tipo de documento seleccionado no esta registrado", "Error en tipo de documento", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            Else
                NUMEROTextBox.Text = lbGlobalcom.Consec.GetNumeroActual(TipoDoc, iTipoDoc.DocEs)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub ConfiguraByTipoDoc()
        Select Case iTipoDoc.DocEs
            Case 1
                btnBuscaBodOri.Enabled = False
                IDBODEGAORIGENTextBox.Enabled = False
                IDTERCEROTextBox.Enabled = False
                SUCURSALTextBox.Enabled = False
                IDCANALTextBox.Enabled = False
                btnBuscaCanal.Enabled = False
                IDVENDEDORTextBox.Enabled = False
                btnBuscaVend.Enabled = False
            Case 2
                btnBuscaBodOri.Enabled = True
                IDBODEGAORIGENTextBox.Enabled = True
                IDTERCEROTextBox.Enabled = False
                SUCURSALTextBox.Enabled = False
                IDCANALTextBox.Enabled = False
                btnBuscaCanal.Enabled = False
                IDVENDEDORTextBox.Enabled = False
                btnBuscaVend.Enabled = False
            Case 3
                btnBuscaBodOri.Enabled = True
                IDBODEGAORIGENTextBox.Enabled = True
                IDTERCEROTextBox.Enabled = False
                SUCURSALTextBox.Enabled = False
                IDCANALTextBox.Enabled = False
                btnBuscaCanal.Enabled = False
                IDVENDEDORTextBox.Enabled = False
                btnBuscaVend.Enabled = False
            Case 4
                btnBuscaBodOri.Enabled = True
                IDBODEGAORIGENTextBox.Enabled = True
                IDTERCEROTextBox.Enabled = True
                SUCURSALTextBox.Enabled = True
                IDCANALTextBox.Enabled = True
                btnBuscaCanal.Enabled = True
                IDVENDEDORTextBox.Enabled = True
                btnBuscaVend.Enabled = True
            Case 5
                btnBuscaBodOri.Enabled = False
                IDBODEGAORIGENTextBox.Enabled = False
                IDTERCEROTextBox.Enabled = True
                SUCURSALTextBox.Enabled = False
                IDCANALTextBox.Enabled = False
                btnBuscaCanal.Enabled = False
                IDVENDEDORTextBox.Enabled = False
                btnBuscaVend.Enabled = False
        End Select
    End Sub
    Private Sub ActualizaDatosDoc()
        Try
            IDBODEGAORIGENTextBox.Text = iTipoDoc.BodegaDe
            IDBODEGADESTINOTextBox.Text = iTipoDoc.BodegaPara
            IDCCOSTOTextBox.Text = iTipoDoc.idCcosto
            IDLISTATextBox.Text = iTipoDoc.idLista
            IDSEDETextBox.Text = iTipoDoc.idSede
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub btnBuscaDoc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaDoc.Click
        Try
            Dim fLDoc As New fListaTipoDocs
            fLDoc.SubClase = "REM"
            If fLDoc.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDDOCUMENTOTextBox.Text = fLDoc.idTipoDoc
                CargaTipoDoc(fLDoc.idTipoDoc)
                ConfiguraByTipoDoc()
                ActualizaDatosDoc()
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub ActualizaDatosTercero()
        Try
            iTerce = New cTercero(IDTERCEROTextBox.Text, "Cli")
            If iTerce IsNot Nothing Then
                txtNombreTercero.Text = iTerce.NombreCompleto
                TXTDIRECCION.Text = iTerce.Direccion
                Dim daMuni As New lbGlobalcom.dsGlobalTableAdapters.GLO_MUNICIPIOSTableAdapter
                TXTCIUDAD.Text = iTerce.iMunicipios.Municipio
                If iTipoDoc.DocEs = eTipoMovimi.Resmision Then
                    If iTerce.iClientes IsNot Nothing Then
                        If IDCANALTextBox.Text.Trim.Length = 0 Then _
                            IDCANALTextBox.Text = iTerce.iClientes.idCanal
                        txtFP.Text = iTerce.iClientes.idFormaPago
                        IDVENDEDORTextBox.Text = iTerce.iClientes.idVendedor
                        If iTerce.iClientes.idListaGlobal IsNot Nothing AndAlso iTerce.iClientes.idListaGlobal.Trim.Length > 0 Then _
                            IDLISTATextBox.Text = iTerce.iClientes.idListaGlobal
                        If txtFP.Text.Trim.Length = 0 Then
                            iTerce.iClientes.SeekClienteBySucursal(SUCURSALTextBox.Text)
                        End If
                        If Not iTerce.iClientes.BodegaConsignacion.Trim.Length > 0 Then
                            Me.IDBODEGAORIGENTextBox.Text = iTerce.iClientes.BodegaConsignacion
                        End If
                    Else
                        MessageBox.Show("Cliente no existe verifique e intente de nuevo", "Cliente No Existe", MessageBoxButtons.OK, MessageBoxIcon.Stop)
                    End If
                End If
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub btnBuscaTerce_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaTerce.Click
        Try
            Dim fBT As New fBuscaTercero
            fBT.TipoTercero = "Cliente"
            If fBT.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDTERCEROTextBox.Text = fBT.midTercero
                SUCURSALTextBox.Text = fBT.mSucursal
                iTerce = New cTercero(IDTERCEROTextBox.Text, "Cli")
                iTerce.iClientes.SeekClienteBySucursal(SUCURSALTextBox.Text)
                ActualizaDatosTercero()
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscasede_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscasede.Click
        Try
            Dim fLS As New fListaSedes
            If fLS.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDSEDETextBox.Text = fLS.Sede
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaVend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaVend.Click
        Dim fVen As New fBuscaTercero
        fVen.TipoTercero = "Vendedor"
        If fVen.ShowDialog = Windows.Forms.DialogResult.OK Then
            IDVENDEDORTextBox.Text = fVen.midTercero
        End If
    End Sub

    Private Sub BindingNavigatorAddNewItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorAddNewItem.Click
        Try
            IDDOCUMENTOTextBox.Enabled = True
            NUMEROTextBox.Enabled = True
            btnBuscaDoc.Enabled = True
            lbGlobalcom.cGeneral.ActivaControles(Me.Controls, True)
            If DsMovimiento.MOV_MOVIMIENTO.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges IsNot Nothing Or DsMovimiento.MOV_DESCRIPCIONDET.GetChanges IsNot Nothing Then
                If MessageBox.Show("Hay cambios pendientes por salvar, desea salvarlos", "Cambios pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    SalvaCambios(True)
                End If
            End If
            MOV_MOVIMIENTOBindingSource.CancelEdit()
            DsMovimiento.MOV_DESCRIPCIONDET.Rows.Clear()
            DsMovimiento.MOV_MOVIMIENTODETALLE.Rows.Clear()
            DsMovimiento.MOV_MOVIMIENTO.Rows.Clear()
            MOV_MOVIMIENTOBindingSource.AddNew()
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellBeginEdit
        MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("LINEA").Value = cGeneral.GetNumeroLinea(MOV_MOVIMIENTODETALLEDataGridView, e.RowIndex)
    End Sub
    Private Sub ActualizaDatosProd(ByVal Fila As Integer)
        Try
            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing Then
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDIVA").Value = cDetLis.iProducto.IdTipoIva
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("VALORBASE").Value = cDetLis.PrecioConDto
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("VALORIVA").Value = cDetLis.Iva
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDTIPOLISTA").Value = cListaP.tipoLista
                Dim idTerce As String = ""
                If iBodOri.ExistenciaCliente.ToUpper = "S" Then
                    idTerce = IDTERCEROTextBox.Text
                Else
                    idTerce = "0"
                End If
                Dim iInv As cInventarios = New cInventarios(DsMovimiento, CustomPrincipal.Periodo.IDPERIODO, IDBODEGAORIGENTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("LINEA").Value, idTerce, lIdPrepackSel)
                cDetLis = cListaP.DetalleLista(MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDPRODUCTO").Value, IDCANALTextBox.Text)
                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido & " EXISTENCIAS: " & iInv.Existencia
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellMouseDoubleClick
        Try
            Select Case e.ColumnIndex
                Case 3
                    If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
                        If MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.X = 3 Then
                            Dim fLProd As New fListaProductos
                            fLProd.ListaPrecios = IDLISTATextBox.Text
                            If fLProd.ShowDialog = Windows.Forms.DialogResult.OK Then
                                MOV_MOVIMIENTODETALLEDataGridView.BeginEdit(True)
                                MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells(3).Value = fLProd.idArticulo
                                MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
                                cDetLis = cListaP.DetalleLista(fLProd.idArticulo, IDCANALTextBox.Text)
                                ActualizaDatosProd(MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.Y)
                                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido
                            End If
                        End If
                    End If
            End Select
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellValidated
        If MOV_MOVIMIENTODETALLEDataGridView.IsCurrentCellInEditMode Then
            Select Case MOV_MOVIMIENTODETALLEDataGridView.Columns(e.ColumnIndex).Name
                Case "IDPRODUCTO"
                    Dim cDescDtalle As cCargarDescripcionDtalle = New cCargarDescripcionDtalle(DsMovimiento, IDBODEGAORIGENTextBox.Text, IDDOCUMENTOTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells(2).Value, NUMEROTextBox.Text, MOV_MOVIMIENTODETALLEBindingSource.Position)
                    cDescDtalle.cargaDescripcionDtalle()
                    MOV_DESCRIPCIONDETALLEBindingSource.EndEdit()
                    SalvaCambios(False)
                Case "CANTIDAD"
                    MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
                    If lIdPrepackSel >= 0 And ckGeneraDetalleAutomatico.Checked = True Then
                        GetDetalleInventario(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("CANTIDAD").Value - CantOld, e.RowIndex)
                        CantOld = 0
                    End If
                    MOV_DESCRIPCIONDETALLEBindingSource.EndEdit()
                    SalvaCambios(False)
            End Select
        End If
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellValidating
        Try
            If MOV_MOVIMIENTODETALLEDataGridView.IsCurrentCellInEditMode AndAlso e.FormattedValue IsNot Nothing AndAlso e.FormattedValue <> "" Then
                Select Case MOV_MOVIMIENTODETALLEDataGridView.Columns(e.ColumnIndex).Name
                    Case "IDPREPACK"
                        If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value IsNot DBNull.Value Then
                            Dim cMov As cMovimiento = New cMovimiento(DsMovimiento, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value)

                            If cMov.validaMovimientoDescripcion Then
                                'e.Cancel = True
                            Else
                                MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("CANTIDAD").Value = 0
                            End If
                            ActualizaExistencias(e.RowIndex)
                        Else
                            e.Cancel = True
                        End If

                    Case "CANTIDAD"        'revisar cambio
                        Dim idTerce As String = ""
                        If iBodOri.ExistenciaCliente.ToUpper = "S" Then
                            idTerce = IDTERCEROTextBox.Text
                        Else
                            idTerce = "0"
                        End If
                        Dim iInv As cInventarios = New cInventarios(DsMovimiento, CustomPrincipal.Periodo.IDPERIODO, IDBODEGAORIGENTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("LINEA").Value, idTerce, lIdPrepackSel)
                        Dim drMov As dsMovimiento.MOV_MOVIMIENTODETALLERow
                        If DsMovimiento.MOV_MOVIMIENTODETALLE.Rows.Count - 1 < MOV_MOVIMIENTODETALLEBindingSource.Position Then
                            drMov = Nothing
                        Else
                            drMov = DsMovimiento.MOV_MOVIMIENTODETALLE.Rows(MOV_MOVIMIENTODETALLEBindingSource.Position)
                        End If
                        If Not iInv.HayExistencias(drMov, CInt(e.FormattedValue)) Then
                            MessageBox.Show("Existencias insuficientes", "Existencias", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                            If iTipoDoc.existenciasNegativas.ToUpper = "N" Then
                                e.Cancel = True
                            End If
                        End If
                        CantOld = iInv.CantidadOri
                End Select
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            stMovimi.Text = ""
            e.Cancel = True
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub ActualizaExistencias(ByVal Fila As Integer)
        Try
            cDetLis = cListaP.DetalleLista(MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells(3).Value)
            Dim iInv As cInventarios = New cInventarios(DsMovimiento, CustomPrincipal.Periodo.IDPERIODO, IDBODEGAORIGENTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("LINEA").Value, "0", lIdPrepackSel)
            If iInv Is Nothing Then
                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido
            Else
                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido & " EXISTENCIAS : " & iInv.ExistenciaNeta
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.EditingControlShowing
        If TypeOf e.Control Is ComboBox Then
            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value IsNot DBNull.Value Then
                AddHandler CType(e.Control, ComboBox).SelectedIndexChanged, AddressOf comboBox_selctedindexchanged
            Else
                MessageBox.Show("Debe seleccionar Un Producto", "ValidaProducto", MessageBoxButtons.OK)
            End If
        End If

    End Sub

    Private Sub comboBox_selctedindexchanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim CB As ComboBox = CType(sender, ComboBox)
        If CB.ValueMember = "IDPREPACK" AndAlso CB.SelectedValue IsNot Nothing Then _
            lIdPrepackSel = CB.SelectedValue
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.GotFocus
        Try
            Dim cVal As New cValidaciones(DsMovimiento)
            Try
                If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
                    MOV_MOVIMIENTOBindingSource.EndEdit()
                    mensajeValidacion = cVal.ValidaMovimiento(iTipoDoc.DocEs)
                    If mensajeValidacion <> "" Then
                        IDSEDETextBox.Focus()
                        MessageBox.Show(mensajeValidacion, "validaciones", MessageBoxButtons.OK)
                    Else
                        If DsMovimiento.MOV_MOVIMIENTO.Rows(MOV_MOVIMIENTOBindingSource.Position).RowState = DataRowState.Added Then
                            NUMEROTextBox.Text = lbGlobalcom.Consec.GetNumeroActual(IDDOCUMENTOTextBox.Text, iTipoDoc.DocEs)
                            SalvaCambios(False)
                        End If
                    End If
                Else
                    IDSEDETextBox.Focus()
                End If
            Catch ex As Exception
                lbGlobalcom.cError.SalvaError(ex, "Samuel")
                MessageBox.Show(ex.Message)
            End Try
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub IDLISTATextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDLISTATextBox.TextChanged
        Try
            If IDLISTATextBox.Text.Trim.Length > 0 Then _
                cListaP = New cEncaListaPrecios(IDLISTATextBox.Text)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.KeyDown
        Try
            If e.Control Then
                Select Case e.KeyCode
                    Case Keys.B
                        If MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.X = 3 Then
                            Dim fLProd As New fListaProductos
                            fLProd.ListaPrecios = IDLISTATextBox.Text
                            If fLProd.ShowDialog = Windows.Forms.DialogResult.OK Then
                                MOV_MOVIMIENTODETALLEDataGridView.BeginEdit(True)
                                MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells(3).Value = fLProd.idArticulo
                                MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
                                cDetLis = cListaP.DetalleLista(fLProd.idArticulo, IDCANALTextBox.Text)
                                ActualizaDatosProd(MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.Y)
                                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido
                                'MOV_MOVIMIENTODETALLEDataGridView.BeginEdit(True)
                            End If
                        End If
                End Select
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try

    End Sub



    Private Sub MOV_MOVIMIENTODETALLEDataGridView_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.RowEnter
        Try
            If e.RowIndex >= 0 AndAlso MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells(3).Value IsNot Nothing AndAlso MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells(1).Value IsNot DBNull.Value Then
                cDetLis = cListaP.DetalleLista(MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells(3).Value)
                Dim iInv As cInventarios = New cInventarios(DsMovimiento, CustomPrincipal.Periodo.IDPERIODO, IDBODEGAORIGENTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("LINEA").Value, "0", lIdPrepackSel)
                If iInv Is Nothing Then
                    stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido
                Else
                    stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido & " EXISTENCIAS " & lIdPrepackSel & ": " & iInv.ExistenciaNeta
                End If
                TotalizaDoc()
                txtCont.Text = cDetLis.iProducto.CantidadSubProd
                txtCantidad.Text = cDetLis.iProducto.CantidadSubProd * MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells(5).Value
            Else
                stMovimi.Text = ""
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try

    End Sub
    Private Sub SalvaCambios(ByVal Msj As Boolean)
        Try
            IDDOCUMENTOTextBox.Enabled = False
            NUMEROTextBox.Enabled = False
            btnBuscaDoc.Enabled = False
            If Msj Then _
                Validate()
            MOV_MOVIMIENTOBindingSource.EndEdit()
            MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
            MOV_DESCRIPCIONDETALLEBindingSource.EndEdit()
            Dim AfecInv As New cAfectaIventarios(DsMovimiento, iTipoDoc, CustomPrincipal.Periodo, False, iTerce.iClientes, "N")
            AfecInv.AfectaInventarios()
            AfecInv = Nothing
            If lEliminaDoc Then
                daMovimiDetDescri.Update(DsMovimiento.MOV_DESCRIPCIONDET)
                daMovimiDetalle.Update(DsMovimiento.MOV_MOVIMIENTODETALLE)
                daMovimi.Update(DsMovimiento.MOV_MOVIMIENTO)
                lEliminaDoc = False
            Else
                daMovimi.Update(DsMovimiento.MOV_MOVIMIENTO)
                daMovimiDetalle.Update(DsMovimiento.MOV_MOVIMIENTODETALLE)
                daMovimiDetDescri.Update(DsMovimiento.MOV_DESCRIPCIONDET)
            End If

            If iTipoDoc.TipoDocGenera IsNot DBNull.Value AndAlso iTipoDoc.TipoDocGenera.Trim.Length > 0 Then
                Dim DocGen As cGeneraDocumentoAutomatico = New cGeneraDocumentoAutomatico(iTipoDoc.TipoDocGenera, DsMovimiento)
                DocGen = Nothing
            End If
            If Msj Then _
                MessageBox.Show("Se salvarón cambios con exito", "Salvar Cambios", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub MOV_MOVIMIENTOBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MOV_MOVIMIENTOBindingNavigatorSaveItem.Click
        Try
            SalvaCambios(True)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_DESCRIPCIONDETDataGridView_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles MOV_DESCRIPCIONDETDataGridView.CellBeginEdit
        asignarLinea(e.RowIndex)
        If e.RowIndex + 1 > MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells(5).Value Then
            e.Cancel = True
            MessageBox.Show("Supero el tope de registro de IMEI e ICCID para esta linea", "Supero el Tope", MessageBoxButtons.OK, MessageBoxIcon.Information)
            MOV_DESCRIPCIONDETDataGridView.CancelEdit()
        End If

    End Sub

    Private Sub asignarLinea(ByVal Fila As Integer)
        If Fila = 0 Then
            MOV_DESCRIPCIONDETDataGridView.Rows(Fila).Cells("LINEADESCDET").Value = 1
        Else
            MOV_DESCRIPCIONDETDataGridView.Rows(Fila).Cells("LINEADESCDET").Value = MOV_DESCRIPCIONDETDataGridView.Rows(Fila - 1).Cells("LINEADESCDET").Value + 1
        End If
    End Sub

    Private Sub btnBuscaRemision_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaRemision.Click
        Try
            Dim fListaMov As New fListaMovimi
            fListaMov.SubClase = "REM"
            If fListaMov.ShowDialog = Windows.Forms.DialogResult.OK Then
                If DsMovimiento.MOV_DESCRIPCIONDET.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTO.GetChanges IsNot Nothing Then
                    If MessageBox.Show("Hay cambios pendientes por salvar, desea salvarlos", "Cambios Pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                        SalvaCambios(False)
                    End If
                End If
                DsMovimiento.MOV_DESCRIPCIONDET.Rows.Clear()
                DsMovimiento.MOV_MOVIMIENTODETALLE.Rows.Clear()
                DsMovimiento.MOV_MOVIMIENTO.Rows.Clear()
                daMovimi.FillByIdDocumentoNumero(DsMovimiento.MOV_MOVIMIENTO, fListaMov.mTipoDoc, fListaMov.mNumeroDoc)
                daMovimiDetalle.FillByIdDocumentoNumero(DsMovimiento.MOV_MOVIMIENTODETALLE, fListaMov.mTipoDoc, fListaMov.mNumeroDoc)
                daMovimiDetDescri.FillByIdDocumentoNumero(DsMovimiento.MOV_DESCRIPCIONDET, fListaMov.mTipoDoc, fListaMov.mNumeroDoc)
                lbGlobalcom.cGeneral.ActivaControles(Me.Controls, True)
                TotalizaDoc()
                ActualizaDatosTercero()
                IDDOCUMENTOTextBox.Enabled = False
                NUMEROTextBox.Enabled = False
                btnBuscaDoc.Enabled = False
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub BindingNavigatorDeleteItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorDeleteItem.Click
        Try
            If MessageBox.Show("Esta seguro que desea eliminar este documento", "Elimina Documento", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                MOV_MOVIMIENTOBindingSource.RemoveCurrent()
                lEliminaDoc = True
                SalvaCambios(False)
                MessageBox.Show("Se elimino documento con exito", "Elimino Documento", MessageBoxButtons.OK, MessageBoxIcon.Information)
                lbGlobalcom.cGeneral.ActivaControles(Me.Controls, False)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Private Sub IDBODEGAORIGENTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDBODEGAORIGENTextBox.TextChanged
        Try
            If IDBODEGAORIGENTextBox.Text.Trim.Length > 0 Then _
                iBodOri = New cBodegas(IDBODEGAORIGENTextBox.Text)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Private Sub IDDOCUMENTOTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDDOCUMENTOTextBox.TextChanged
        Try
            If IDDOCUMENTOTextBox.Text.Trim.Length > 0 Then _
                iTipoDoc = New cTipoDocumento(IDDOCUMENTOTextBox.Text)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub BtnBuscaFP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaFP.Click
        Try
            Dim fLisFP As New fListaFormasPago
            If fLisFP.ShowDialog = Windows.Forms.DialogResult.OK Then
                txtFP.Text = fLisFP.FP
                'ActualizaFormaPago(fLisFP.FP)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Private Sub txtfp_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFP.TextChanged
        Try
            If txtFP.Text.Trim.Length > 0 Then
                iFP = New cFormasPago(txtFP.Text)
                'FECHAVENCIMIENTODateTimePicker.Value = iFP.GetFechaVence(FECHADOCUMENTODateTimePicker.Value)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub TotalizaDoc()
        Dim TotalBase As Double = 0
        Dim TotalIva As Double = 0
        Dim Totaldoc As Double = 0
        For Each drDetMov As dsMovimiento.MOV_MOVIMIENTODETALLERow In DsMovimiento.MOV_MOVIMIENTODETALLE.Rows
            If Not drDetMov.RowState = DataRowState.Deleted Then
                TotalBase += drDetMov.VALORBASE * drDetMov.CANTIDAD
                TotalIva += drDetMov.VALORIVA * drDetMov.CANTIDAD
                Totaldoc += drDetMov.VALORLINEA
            End If

        Next
        Me.TXTTOTALBASE.Text = TotalBase.ToString("c2")
        Me.TXTTOTALIVA.Text = TotalIva.ToString("C2")
        Me.TXTTOTALDOC.Text = Totaldoc.ToString("C2")
    End Sub

    Private Sub MOV_DESCRIPCIONDETDataGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MOV_DESCRIPCIONDETDataGridView.KeyDown
        Try
            If e.Control Then
                Select Case e.KeyCode
                    Case Keys.B
                        If MOV_DESCRIPCIONDETDataGridView.CurrentCellAddress.X = 1 Then
                            Dim flMoviDtalle As New fListaMoviDetalle
                            flMoviDtalle.pBodegaDe = IDBODEGAORIGENTextBox.Text
                            flMoviDtalle.pProducto = MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells(3).Value
                            If flMoviDtalle.ShowDialog = Windows.Forms.DialogResult.OK Then
                                'MessageBox.Show("selecciono")
                                MOV_DESCRIPCIONDETDataGridView.Rows(MOV_DESCRIPCIONDETDataGridView.CurrentRow.Index).Cells(2).Value = flMoviDtalle.pImei
                                MOV_DESCRIPCIONDETDataGridView.Rows(MOV_DESCRIPCIONDETDataGridView.CurrentRow.Index).Cells(3).Value = flMoviDtalle.pIccid
                                'MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells(3).Value = fLProd.idArticulo
                                asignarLinea(MOV_DESCRIPCIONDETDataGridView.CurrentRow.Index)
                            End If
                        End If
                End Select
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub MOV_DESCRIPCIONDETDataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles MOV_DESCRIPCIONDETDataGridView.DataError
        e.Cancel = True
        lbGlobalcom.cError.SalvaError(e.Exception, "Samuel")
        MessageBox.Show(e.Exception.Message)
    End Sub

    Private Sub IDTERCEROTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDTERCEROTextBox.TextChanged
        Try
            If IDTERCEROTextBox.Text.Trim.Length > 0 Then
                iTerce = New cTercero(IDTERCEROTextBox.Text, "Cli")
                If SUCURSALTextBox.Text.Trim.Length > 0 Then _
                iTerce.iClientes.SeekClienteBySucursal(SUCURSALTextBox.Text)
            End If

        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub SUCURSALTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SUCURSALTextBox.TextChanged
        Try
            If SUCURSALTextBox.Text.Trim.Length > 0 AndAlso iTerce IsNot Nothing Then _
                iTerce.iClientes.SeekClienteBySucursal(SUCURSALTextBox.Text)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Private Sub GetDetalleInventario(ByVal idProd As String, ByVal Cant As Integer, ByVal Fila As Integer)
        Try
            Dim bDetInv As cBuscaDetalleInvYPrepacks = New cBuscaDetalleInvYPrepacks(lIdPrepackSel, IDBODEGAORIGENTextBox.Text, idProd, "S", Cant, iTipoDoc, ckGeneraDetalleAutomatico.Checked)
            bDetInv.InsertaDatos(DsMovimiento, Fila, IDLISTATextBox.Text, Cant)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscarPrepack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscarPrepack.Click
        Try
            If lIdPrepackSel > 0 And MOV_MOVIMIENTODETALLEDataGridView.Rows.Count > 0 Then
                Dim flPrep As New fListaPrepack
                flPrep.mIdPrepack = lIdPrepackSel
                flPrep.mBodega = IDBODEGAORIGENTextBox.Text
                If flPrep.ShowDialog = Windows.Forms.DialogResult.OK Then
                    If validarNumeroRegP(flPrep.mNumeroRegP) = 0 Then
                        Dim cCargaDtalle As cCargaDetalleInvPrepacks = New cCargaDetalleInvPrepacks(flPrep.mIdPrepack, flPrep.mProducto, flPrep.mConsecutivo, flPrep.mTipoPrepack, flPrep.mBodega)
                        cCargaDtalle.InsertaDatos(DsMovimiento, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, IDLISTATextBox.Text)
                        InicializaConsec()
                        ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
                        'RenumerarNumeroProducto()
                        SalvaCambios(False)
                    Else
                        MessageBox.Show("El Numero de registro ya se ha ingresado", "NumeroRegistro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    End If
                End If
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Function validarNumeroRegP(ByVal numReg As String) As Integer
        Try
            For Each drMov As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                If drMov.NUMEROREGISTRO = numReg Then
                    Return 1
                End If
            Next
            Return 0
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try

    End Function

    Private Sub InicializaConsec()
        Dim NFilas As Integer = MOV_DESCRIPCIONDETDataGridView.RowCount
        txtIngres.Text = NFilas
        If NFilas = 0 Then
            txtConsec.Text = 0
        ElseIf NFilas <= cDetLis.iProducto.CantidadSubProd Then
            txtConsec.Text = NFilas
        Else
            Dim FilaActual As Integer = NFilas - 1
            Dim Salir = False
            Dim NregCosecIguales As Integer = 0
            Dim nConsec As Integer = MOV_DESCRIPCIONDETDataGridView.Rows(FilaActual).Cells("NUMEROPRODUCTO1").Value
            While Not Salir
                If MOV_DESCRIPCIONDETDataGridView.Rows(FilaActual).Cells("NUMEROPRODUCTO1").Value <> nConsec Or NregCosecIguales = cDetLis.iProducto.CantidadSubProd Then
                    Salir = True
                Else
                    FilaActual -= 1
                    NregCosecIguales += 1
                End If
            End While
            txtConsec.Text = NregCosecIguales
        End If
    End Sub
    Private Function GetConsecActual() As Integer
        If MOV_DESCRIPCIONDETDataGridView.RowCount = 0 Then
            Return 1
        Else
            Return MOV_DESCRIPCIONDETDataGridView.Rows(MOV_DESCRIPCIONDETDataGridView.RowCount - 1).Cells("NUMEROPRODUCTO1").Value
        End If
    End Function
    Private Sub ValidarRegsitroDescDetalle(ByVal Fila As Integer, ByVal Cantidad As Integer)
        Dim NFilas As Integer = MOV_DESCRIPCIONDETDataGridView.RowCount
        If Not MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).IsNewRow Then
            If cDetLis.iProducto.CantidadSubProd * Cantidad > NFilas Then
                txtNumeroReg.Enabled = True
                btnBuscarPrepack.Enabled = True
            Else
                txtNumeroReg.Enabled = False
                btnBuscarPrepack.Enabled = False
            End If
        End If
    End Sub

    Private Sub tpDetalle_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles tpDetalle.Enter
        Try
            If iTipoDoc.DocEs = eTipoMovimi.Resmision Then
                'txtNumeroReg.ReadOnly = True
                btnBuscarPrepack.Enabled = True
            Else
                'txtNumeroReg.ReadOnly = False
                btnBuscarPrepack.Enabled = False
            End If
            InicializaConsec()
            ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub eliminarRegistros(ByVal idProd As String, ByVal tipoSubProd As Integer, ByVal numReg As String)
        Try
            ''Dim productoP As String
            Dim dt As New dsInvenConsultas.INV_GETPREPACKDataTable
            Dim cGetDatos As GetDatosPrepack = New GetDatosPrepack(idProd, tipoSubProd, numReg)
            dt = cGetDatos.Prepack
            Dim cant As Integer = 0
            Dim numLinea As Integer
            For Each dr As dsInvenConsultas.INV_GETPREPACKRow In dt
                For Each drDesc As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                    If drDesc.RowState <> DataRowState.Deleted Then
                        If dr.TIPOSUBPRODH > 0 Then
                            If drDesc.NUMEROREGISTRO = dr.NUMEROREGISTROH And drDesc.TIPOSUBPROD = 2 Then
                                cant += 1
                                numLinea = drDesc.NUMEROLINEA
                                drDesc.Delete()
                                GoTo fin
                            End If
                        End If
                        If drDesc.NUMEROREGISTRO = dr.NUMEROREGISTROP And drDesc.TIPOSUBPROD = 1 Then
                            drDesc.Delete()
                            'Exit For
                        End If
fin:
                    End If
                Next
            Next
            For Each drDeta As dsMovimiento.MOV_MOVIMIENTODETALLERow In DsMovimiento.MOV_MOVIMIENTODETALLE.Rows
                If drDeta.NUMEROLINEA = numLinea Then
                    drDeta.CANTIDAD -= cant
                    If drDeta.CANTIDAD = 0 Then
                        drDeta.Delete()
                    End If
                    Exit For
                End If
            Next
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub txtNumeroReg_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtNumeroReg.Validating
        Try
            If txtNumeroReg.Text.Length > 0 Then
                If validaImeiIccid(txtNumeroReg.Text) = 0 Then
                    If daInv.GetImeiIccidValido(txtNumeroReg.Text) = 0 Then
                        Dim conseAsigna As Integer = GetConsecActual()
                        If txtConsec.Text = txtCont.Text Then
                            conseAsigna += 1
                            txtConsec.Text = 1
                        Else
                            txtConsec.Text += 1
                        End If
                        Dim drMovDetalle As dsMovimiento.MOV_MOVIMIENTODETALLERow = DsMovimiento.MOV_MOVIMIENTODETALLE.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index)
                        Dim drDescDet As dsMovimiento.MOV_DESCRIPCIONDETRow = DsMovimiento.MOV_DESCRIPCIONDET.NewMOV_DESCRIPCIONDETRow
                        drDescDet.SetParentRow(drMovDetalle, DsMovimiento.Relations("FK_MOV_MOVIMIENTODETALLE_MOV_DESCRIPCIONDET"))
                        drDescDet.NUMEROPRODUCTO = conseAsigna
                        drDescDet.TIPOSUBPROD = cDetLis.iProducto.TipoSubProd
                        drDescDet.NUMEROREGISTRO = txtNumeroReg.Text
                        drDescDet.COSTO = drMovDetalle.VALORBASE * (1 - drMovDetalle.DESCUENTO1) * (1 - drMovDetalle.DESCUENTO2)
                        DsMovimiento.MOV_DESCRIPCIONDET.Rows.Add(drDescDet)
                        drDescDet = Nothing
                        drMovDetalle = Nothing
                        txtIngres.Text = MOV_DESCRIPCIONDETDataGridView.RowCount
                    Else
                        MessageBox.Show("El Numero de registro ya se ha en Inventario", "Inventario", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

                    End If
                Else
                    MessageBox.Show("El Numero de registro ya se ha ingresado", "NumeroRegistro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

                End If
                txtNumeroReg.Text = ""
                txtNumeroReg.Focus()
            End If
            ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Function validaImeiIccid(ByVal numeroRegistro As String) As Integer
        Dim existe As Integer = 0
        Try
            For Each drDes As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                If drDes("NUMEROREGISTRO") = numeroRegistro Then
                    existe = 1
                End If
            Next
            Return existe
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Function

    Private Sub btnEliminaDesDet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminaDesDet.Click
        Try
            If MessageBox.Show("Esta seguro que desea eliminar el ultimo registro", "Elimina Registro", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                Dim cGetDatos As GetDatosPrepack = New GetDatosPrepack(MOV_DESCRIPCIONDETDataGridView.Rows(MOV_DESCRIPCIONDETDataGridView.RowCount - 1).Cells("IDPRODUCTO1").Value, MOV_DESCRIPCIONDETDataGridView.Rows(MOV_DESCRIPCIONDETDataGridView.RowCount - 1).Cells("TIPOSUBPROD").Value, MOV_DESCRIPCIONDETDataGridView.Rows(MOV_DESCRIPCIONDETDataGridView.RowCount - 1).Cells("NUMEROREGISTRO").Value)
                If CType(txtCont.Text, Integer) >= 1 And cGetDatos.EsPrepack Then
                    eliminarRegistros(MOV_DESCRIPCIONDETDataGridView.Rows(MOV_DESCRIPCIONDETDataGridView.RowCount - 1).Cells("IDPRODUCTO1").Value, MOV_DESCRIPCIONDETDataGridView.Rows(MOV_DESCRIPCIONDETDataGridView.RowCount - 1).Cells("TIPOSUBPROD").Value, MOV_DESCRIPCIONDETDataGridView.Rows(MOV_DESCRIPCIONDETDataGridView.RowCount - 1).Cells("NUMEROREGISTRO").Value)
                Else
                    MOV_DESCRIPCIONDETALLEBindingSource.RemoveAt(MOV_DESCRIPCIONDETDataGridView.RowCount - 1)
                End If
                SalvaCambios(False)
                InicializaConsec()
                ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaBodDes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaBodDes.Click
        Try
            Dim fBusBod As New fListaBodegas
            fBusBod.idSede = IDSEDETextBox.Text
            If fBusBod.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDBODEGADESTINOTextBox.Text = fBusBod.Bodega
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnEliminarMov_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminarMov.Click
        Try
            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing Then
                MOV_MOVIMIENTODETALLEBindingSource.RemoveCurrent()
                lEliminaDoc = True
                SalvaCambios(False)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub


End Class